***如果你不懂的Http协议,Java Web你不用学了,因为你学不懂!Java Web底层的原理。***
1,基本知识:
---现在的浏览器大部分都具有查看页面的详细请求流程和信息,例如谷歌,火狐,IE HttpWach等。
---例如,以前,在处理中国物通网的问题时,一些复杂的问题,就可以通过浏览器和服务器的http交互,找出问题。
---http协议工作在tcp/ip协议之上!!!是一个应用层协议!!!
2,Http请求详解(请求行,请求头,请求数据---表单就属于请求数据):
---上边空行下边就是请求数据。
---GET数据有限制,例如我向服务器发一个10k的图片,那就不能用GET。POST传送的数据量无限制!!!
---Referer是为了防盗链的,如果不防盗链,会死的很残!后台程序中,通过程序检测Referer,如果是本网站,就返回客户点击的信息,如果不是本网站,就不返回信息。
---Referer就是浏览器的上一个页面,从哪个页面点击过来的。
3,Http响应详解(状态行,响应头,响应内容)
---记住一句话:服务器在给浏览器回送数据的时候,它可以通过响应头来控制浏览器的行为,浏览器如何处理数据,这是响应头的第一个作用。第二个作用就是返回服务器的基本信息。
---100--199不常用。200常用。
---403是服务器有资源,拒绝你的访问。404表示服务器没有这个资源。
---304和307是找缓存。302是重定向,去找别人。
---location表示访问的真实地址。
---Refresh控制浏览器定时刷新。例如股票网站,或者体育文字直播网站,或者聊天室。
//3秒后刷新,并跳转到新浪。如果很多网站注册成功后,都有一个20秒之后会自动跳转到某页面,如果没有跳转,请手动点击,就是用这个功能实现的。
---Content-Disposition表示以下载方式打开数据。
---Content-Encoding:gzip表示压缩格式,为什么要压缩?一是为了加快浏览速度,例如资源10m,压缩为1m传给客户,然后在客户端解压缩展示,就加快了浏览速度。二是为了节省流量,因为像百度,新浪这些网站,电信都是按照流量收费的,不压缩,就有点亏。
如何实现数据压缩?Java Jdk中有内置的api。如下图案例:
---下边是一个Servlet(类似asp.net中的一般处理程序),读取本地一个图片返回给客户端,注意下边头信息中返回数据类型的设置:
---这个头可以实现断点续传,具体看方立勋30天轻松掌握JavaWeb视频 前11天视频第四天---15-Http响应头(range头实现断点下载)
@总结:
1,在web开发时,一个优化原则,在设计页面时,一定要减少客户机的http请求数。例如现在用的比较多的,将几张图片合成为一张图片,客户端使用时,根据使用图片的坐标分开调用。这样就减少了http请求次数。还有一个优化原则就是将外部多个js文件归并为一个js文件。
2,重点--->网站缓存,高并发,不常更新的都要使用缓存。